﻿//763. 划分字母区间
//给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段，同一字母最多出现在一个片段中。
//注意，划分结果需要满足：将所有划分结果按顺序连接，得到的字符串仍然是 s 。
//返回一个表示每个字符串片段的长度的列表。


class Solution {
public:
    vector<int> partitionLabels(string s)
    {
        int n = s.size();
        vector<int> ans;
        int last[26];
        for (int i = 0; i < n; i++)
            last[s[i] - 'a'] = i;
        int start = 0, end = 0;
        for (int i = 0; i < n; i++)
        {
            end = max(end, last[s[i] - 'a']);
            if (i == end)
            {
                ans.push_back(end - start + 1);
                start = end + 1;
            }
        }
        return ans;
    }
};